<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>06_面试题</title>
</head>
<body>

<script type="text/javascript">
  /*
  测试题1
   */
  function A () {

  }
  A.prototype.n = 1
// b是实例，因此b只有隐式原型，
// b是通过隐式原型b.__proto__==A.prototype来得到n的
  var b = new A()
// 更新了A的显式原型
  A.prototype = {
    n: 2,
    m: 3
  }

  var c = new A()
  console.log(b.n, b.m, c.n, c.m)
  // 1 undefined 2 3


  /*
   测试题2
   */
  function F (){}
  Object.prototype.a = function(){
    console.log('a()')
  }
  Function.prototype.b = function(){
    console.log('b()')
  }
  
    // 每个函数都有一个prototype属性, 它
    // 默认指向一个Object空对象(即称为: 原型对象)
    // 所以：F.prototype指向的是object，而f.__proto__ = F.prototype
  var f = new F()
  // F.__proto__:Function..prototype
  // F.__proto__.__proto__ = Object.prototype
  f.a()
  // f.b()
  F.a()
  F.b()
  // console.log(f)
  // console.log(Object.prototype)
  // console.log(Function.prototype)
  // console.log(F.__proto__)
  // console.log(F.__proto__.__proto__) :Object.prototype
  // console.log(Function.__proto__)

</script>
</body>
</html>